#include "msg_queue_peer.h"
//该程序的功能是接收两个消息队列的消息，分别是stm32和modbus,然后打印出来
struct msgbuf
{
    long mtype; /* 消息类型,必须>0 */
    int key;    /* 消息内容 */
    int value;  /* 消息内容 */
};
struct msgbuf stm32_recv, modbus_recv; // 使用独立缓冲区
int mes_recv_use()  
{
    while (1)
    {
        printf("recving stm32\n");
        // 尝试接收stm32队列消息
        if (msg_queue_recv("stm32", &stm32_recv, sizeof(stm32_recv), 0, IPC_NOWAIT) > 0)
        {
            printf("stm32: key=%d, value=%d\n", stm32_recv.key, stm32_recv.value);
        }
        else if (errno != ENOMSG)
        { // 忽略"队列空"错误
            perror("stm32 recv error");
        }
        printf("recving modbus\n");
        // 尝试接收modbus队列消息
        if (msg_queue_recv("modbus", &modbus_recv, sizeof(modbus_recv), 0, IPC_NOWAIT) > 0)
        {
            printf("modbus: key=%d, value=%d\n", modbus_recv.key, modbus_recv.value);
        }
        else if (errno != ENOMSG)
        { // 忽略"队列空"错误
            perror("modbus recv error");
        }

        sleep(1);
    }
    return 0;
}
int main(int argc, char *argv[])
{
    mes_recv_use(); 
    return 0;
}